|
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
|