1  /* SPDX-License-Identifier: GPL-2.0-or-later */
2  /*
3   * hvcserver.h
4   * Copyright (C) 2004 Ryan S Arnold, IBM Corporation
5   *
6   * PPC64 virtual I/O console server support.
7   */
8  
9  #ifndef _PPC64_HVCSERVER_H
10  #define _PPC64_HVCSERVER_H
11  #ifdef __KERNEL__
12  
13  #include <linux/list.h>
14  
15  /* Converged Location Code length */
16  #define HVCS_CLC_LENGTH	79
17  
18  /**
19   * hvcs_partner_info - an element in a list of partner info
20   * @node: list_head denoting this partner_info struct's position in the list of
21   *	partner info.
22   * @unit_address: The partner unit address of this entry.
23   * @partition_ID: The partner partition ID of this entry.
24   * @location_code: The converged location code of this entry + 1 char for the
25   *	null-term.
26   *
27   * This structure outlines the format that partner info is presented to a caller
28   * of the hvcs partner info fetching functions.  These are strung together into
29   * a list using linux kernel lists.
30   */
31  struct hvcs_partner_info {
32  	struct list_head node;
33  	uint32_t unit_address;
34  	uint32_t partition_ID;
35  	char location_code[HVCS_CLC_LENGTH + 1]; /* CLC + 1 null-term char */
36  };
37  
38  extern int hvcs_free_partner_info(struct list_head *head);
39  extern int hvcs_get_partner_info(uint32_t unit_address,
40  		struct list_head *head, unsigned long *pi_buff);
41  extern int hvcs_register_connection(uint32_t unit_address,
42  		uint32_t p_partition_ID, uint32_t p_unit_address);
43  extern int hvcs_free_connection(uint32_t unit_address);
44  
45  #endif /* __KERNEL__ */
46  #endif /* _PPC64_HVCSERVER_H */
47