/*
 * STHYI related flags and structure definitions.
 *
 * Copyright 2018 IBM Corp.
 *
 * Authors:
 *    Janosch Frank <frankja@linux.vnet.ibm.com>
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Library General Public License version 2.
 */
#ifndef _STHYI_H_
#define _STHYI_H_

#include <stdint.h>

enum sthyi_rtn_code {
	CODE_UNSUPP = 0x04, /* with cc = 3 */
	CODE_SUCCES = 0x00, /* with cc = 0 */
};

enum sthyi_hdr_flags {
	HDR_PERF_UNAV  = 0x80,
	HDR_STSI_UNAV  = 0x40,
	HDR_STACK_INCM = 0x20,
	HDR_NOT_LPAR   = 0x10,
};

enum sthyi_mach_validity {
	MACH_CNT_VLD  = 0x80,
	MACH_ID_VLD   = 0x40,
	MACH_NAME_VLD = 0x20,
};

enum sthyi_par_flag {
	PART_MT_EN = 0x80,
};

enum sthyi_par_validity {
	PART_CNT_VLD  = 0x80,
	PART_WGHT_CAP = 0x40,
	PART_ABS_CAP  = 0x20,
	PART_STSI_SUC = 0x10,
	PART_GRP_VLD  = 0x08,
};

struct sthyi_hdr_sctn {
	uint8_t INFHFLG1;
	uint8_t INFHFLG2; /* reserved */
	uint8_t INFHVAL1; /* reserved */
	uint8_t INFHVAL2; /* reserved */
	uint8_t reserved[3];
	uint8_t INFHYGCT;
	uint16_t INFHTOTL;
	uint16_t INFHDLN;
	uint16_t INFMOFF;
	uint16_t INFMLEN;
	uint16_t INFPOFF;
	uint16_t INFPLEN;
	uint16_t INFHOFF1;
	uint16_t INFHLEN1;
	uint16_t INFGOFF1;
	uint16_t INFGLEN1;
	uint16_t INFHOFF2;
	uint16_t INFHLEN2;
	uint16_t INFGOFF2;
	uint16_t INFGLEN2;
	uint16_t INFHOFF3;
	uint16_t INFHLEN3;
	uint16_t INFGOFF3;
	uint16_t INFGLEN3;
	uint8_t reserved2[4];
} __attribute__((packed));

struct sthyi_mach_sctn {
	uint8_t INFMFLG1; /* reserved */
	uint8_t INFMFLG2; /* reserved */
	uint8_t INFMVAL1;
	uint8_t INFMVAL2; /* reserved */
	uint16_t INFMSCPS;
	uint16_t INFMDCPS;
	uint16_t INFMSIFL;
	uint16_t INFMDIFL;
	char INFMNAME[8];
	char INFMTYPE[4];
	char INFMMANU[16];
	char INFMSEQ[16];
	char INFMPMAN[4];
	uint8_t reserved[4];
} __attribute__((packed));

struct sthyi_par_sctn {
	uint8_t INFPFLG1;
	uint8_t INFPFLG2; /* reserved */
	uint8_t INFPVAL1;
	uint8_t INFPVAL2; /* reserved */
	uint16_t INFPPNUM;
	uint16_t INFPSCPS;
	uint16_t INFPDCPS;
	uint16_t INFPSIFL;
	uint16_t INFPDIFL;
	uint16_t reserved;
	char INFPPNAM[8];
	uint32_t INFPWBCP;
	uint32_t INFPABCP;
	uint32_t INFPWBIF;
	uint32_t INFPABIF;
} __attribute__((packed));

struct sthyi_par_sctn_ext {
	uint8_t INFPFLG1;
	uint8_t INFPFLG2; /* reserved */
	uint8_t INFPVAL1;
	uint8_t INFPVAL2; /* reserved */
	uint16_t INFPPNUM;
	uint16_t INFPSCPS;
	uint16_t INFPDCPS;
	uint16_t INFPSIFL;
	uint16_t INFPDIFL;
	uint16_t reserved;
	char INFPPNAM[8];
	uint32_t INFPWBCP;
	uint32_t INFPABCP;
	uint32_t INFPWBIF;
	uint32_t INFPABIF;
	char INFPLGNM[8];
	uint32_t INFPLGCP;
	uint32_t INFPLGIF;
} __attribute__((packed));

#endif
