Blame src/ses.h

Packit Service db8df9
/*
Packit Service db8df9
 * Intel(R) Enclosure LED Utilities
Packit Service db8df9
 * Copyright (C) 2009-2017 Intel Corporation.
Packit Service db8df9
 *
Packit Service db8df9
 * This program is free software; you can redistribute it and/or modify it
Packit Service db8df9
 * under the terms and conditions of the GNU General Public License,
Packit Service db8df9
 * version 2, as published by the Free Software Foundation.
Packit Service db8df9
 *
Packit Service db8df9
 * This program is distributed in the hope it will be useful, but WITHOUT
Packit Service db8df9
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
Packit Service db8df9
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
Packit Service db8df9
 * more details.
Packit Service db8df9
 *
Packit Service db8df9
 * You should have received a copy of the GNU General Public License along with
Packit Service db8df9
 * this program; if not, write to the Free Software Foundation, Inc.,
Packit Service db8df9
 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
Packit Service db8df9
 *
Packit Service db8df9
 */
Packit Service db8df9
Packit Service db8df9
#ifndef _SES_H_INCLUDED_
Packit Service db8df9
#define _SES_H_INCLUDED_
Packit Service db8df9
Packit Service db8df9
#include <asm/types.h>
Packit Service db8df9
Packit Service db8df9
/* Size of buffer for SES-2 Messages. */
Packit Service db8df9
#define SES_ALLOC_BUFF 4096
Packit Service db8df9
Packit Service db8df9
#define ENCL_CFG_DIAG_STATUS		0x01
Packit Service db8df9
#define ENCL_CTRL_DIAG_STATUS		0x02
Packit Service db8df9
#define ENCL_CTRL_DIAG_CFG		0x02
Packit Service db8df9
#define ENCL_EL_DESCR_STATUS		0x07
Packit Service db8df9
#define ENCL_ADDITIONAL_EL_STATUS	0x0a
Packit Service db8df9
#define SCSI_PROTOCOL_SAS		6
Packit Service db8df9
Packit Service db8df9
typedef enum __attribute__((packed)) {
Packit Service db8df9
	SES_UNSPECIFIED		= 0x00,
Packit Service db8df9
	SES_DEVICE_SLOT		= 0x01,
Packit Service db8df9
	SES_ARRAY_DEVICE_SLOT	= 0x17,
Packit Service db8df9
} element_type;
Packit Service db8df9
Packit Service db8df9
static inline void _set_prdfail(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[0] |= (1 << 6);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_abrt(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[1] |= (1 << 0);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_rebuild(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[1] |= (1 << 1);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_ifa(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[1] |= (1 << 2);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_ica(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[1] |= (1 << 3);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_cons_check(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[1] |= (1 << 4);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_hspare(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[1] |= (1 << 5);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_rsvd_dev(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[1] |= (1 << 6);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_ok(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[1] |= (1 << 7);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_ident(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[2] |= (1 << 1);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _clr_ident(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[2] &= ~(1 << 1);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_rm(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[2] |= (1 << 2);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_ins(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[2] |= (1 << 3);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_miss(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[2] |= (1 << 4);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_dnr(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[2] |= (1 << 6);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_actv(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[2] |= (1 << 7);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_enbb(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[3] |= (1 << 2);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_enba(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[3] |= (1 << 3);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_off(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[3] |= (1 << 4);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
static inline void _set_fault(unsigned char *u)
Packit Service db8df9
{
Packit Service db8df9
	u[3] |= (1 << 5);
Packit Service db8df9
}
Packit Service db8df9
Packit Service db8df9
struct ses_page {
Packit Service db8df9
	unsigned char buf[SES_ALLOC_BUFF];
Packit Service db8df9
	int len;
Packit Service db8df9
};
Packit Service db8df9
Packit Service db8df9
struct type_descriptor_header {
Packit Service db8df9
	element_type element_type;
Packit Service db8df9
	__u8 num_of_elements;
Packit Service db8df9
	__u8 subenclosure_id;
Packit Service db8df9
	__u8 type_desc_text_len;
Packit Service db8df9
};
Packit Service db8df9
Packit Service db8df9
struct ses_pages {
Packit Service db8df9
	struct ses_page *page1;
Packit Service db8df9
	struct ses_page *page2;
Packit Service db8df9
	struct ses_page *page10;
Packit Service db8df9
	struct type_descriptor_header *page1_types;
Packit Service db8df9
	int page1_types_len;
Packit Service db8df9
};
Packit Service db8df9
Packit Service db8df9
struct ses_slot_ctrl_elem {
Packit Service db8df9
	union {
Packit Service db8df9
		struct {
Packit Service db8df9
			__u8 common_control;
Packit Service db8df9
			__u8 array_slot_control;
Packit Service db8df9
			__u8 b2;
Packit Service db8df9
			__u8 b3;
Packit Service db8df9
		};
Packit Service db8df9
		__u8 b[4];
Packit Service db8df9
	};
Packit Service db8df9
};
Packit Service db8df9
Packit Service db8df9
#endif