/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_DADA_TARGET_DADPRIV_H
#define _SYS_DADA_TARGET_DADPRIV_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#define DIOCTL_RWCMD 5 /* read/write a disk */
/*
* dadkio_rwcmd cmd
*/
#define DADKIO_RWCMD_READ 1 /* read command */
#define DADKIO_RWCMD_WRITE 2 /* write command */
/*
* dadkio_rwcmd flags
*/
#define DADKIO_FLAG_SILENT 0x01 /* driver should not */
/* generate any warning */
/* or error console msgs */
#define DADKIO_FLAG_RESERVED 0x02 /* reserved/not used */
#define DADKIO_ERROR_INFO_LEN 128
/*
* dadkio_status status value.
*/
struct dadkio_status {
int status;
ulong_t resid;
int failed_blk_is_valid;
daddr_t failed_blk;
int fru_code_is_valid;
int fru_code;
char add_error_info[DADKIO_ERROR_INFO_LEN];
};
struct dadkio_status32 {
int status;
uint32_t resid;
int failed_blk_is_valid;
daddr32_t failed_blk;
int fru_code_is_valid;
int fru_code;
char add_error_info[DADKIO_ERROR_INFO_LEN];
};
/*
* Used by read/write ioctl (DKIOCTL_RWCMD)
*/
struct dadkio_rwcmd {
int cmd;
int flags;
daddr_t blkaddr;
uint_t buflen;
caddr_t bufaddr;
struct dadkio_status status;
};
struct dadkio_rwcmd32 {
int cmd;
int flags;
daddr32_t blkaddr;
uint_t buflen;
caddr32_t bufaddr;
struct dadkio_status32 status;
};
/*
* dadkio_status status values
*/
#define DADKIO_STAT_NO_ERROR 0 /* cmd was successful */
#define DADKIO_STAT_NOT_READY 1 /* device not ready */
#define DADKIO_STAT_MEDIUM_ERROR 2 /* error on medium */
#define DADKIO_STAT_HARDWARE_ERROR 3 /* other hardware error */
#define DADKIO_STAT_ILLEGAL_REQUEST 4 /* illegal request */
#define DADKIO_STAT_ILLEGAL_ADDRESS 5 /* illegal block address */
#define DADKIO_STAT_WRITE_PROTECTED 6 /* device write-protected */
#define DADKIO_STAT_TIMED_OUT 7 /* no response from device */
#define DADKIO_STAT_PARITY 8 /* parity error in data */
#define DADKIO_STAT_BUS_ERROR 9 /* error on bus */
#define DADKIO_STAT_SOFT_ERROR 10 /* data recovered via ECC */
#define DADKIO_STAT_NO_RESOURCES 11 /* no resources for cmd */
#define DADKIO_STAT_NOT_FORMATTED 12 /* device is not formatted */
#define DADKIO_STAT_RESERVED 13 /* device is reserved */
#define DADKIO_STAT_NOT_SUPPORTED 14 /* feature not supported */
#ifdef __cplusplus
}
#endif
#endif /* _SYS_DADA_TARGET_DADPRIV_H */