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