/*
*/
/*
* Copyright 2005-06 Adaptec, Inc.
* Copyright (c) 2005-06 Adaptec Inc., Achim Leubner
* Copyright (c) 2000 Michael Smith
* Copyright (c) 2000-2001 Scott Long
* Copyright (c) 2000 BSDi
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
#ifndef __AAC_REGS_H__
#define __AAC_REGS_H__
#ifdef __cplusplus
extern "C" {
#endif
/* Status bits in the doorbell registers */
/* FIB */
/* commands */
/* complete */
/* printf */
/* Status bits in firmware status reg */
/* aac registers definitions */
/* Sunrise Lake dual core reset */
/*
* Minimum memory sizes we need to map to address the adapter. Before
* we know the actual size to map, minimum memory is used instead.
*/
/*
* Options supported by the adapter
*/
/*
* More options from supplement info - SupportedOptions2
*/
/*
* FeatureBits of RequestSupplementAdapterInfo used in the driver
*/
#pragma pack(1)
/*
* FIB (FSA Interface Block) this is the data structure passed between
* the host and adapter.
*/
struct aac_fib_header {
int prev;
int next;
};
/* FIB completed without error or no data was transferred in the FIB */
/* The received FIB is an AIF */
struct aac_fib {
};
/* FIB transfer state */
/* FIB types */
/*
* FIB commands
*/
/* Lowlevel and comm commands */
/* Filesystem commands */
/* Container commands */
/* Cluster commands */
/* Scsi Port commands (scsi passthrough) */
/* Misc house keeping and generic adapter initiated commands */
/*
* Revision number handling
*/
struct FsaRev {
union {
struct {
} comp;
} external;
};
/*
* Structures used to respond to a RequestAdapterInfo FIB
*/
struct aac_adapter_info {
};
/*
* The following definitions on Supplement Adapter Information
* come from Adaptec:
*/
struct vpd_info {
};
struct aac_supplement_adapter_info {
/* The assigned Adapter Type Text, extra byte for null termination */
/* Pad for the text above */
/* Size in bytes of the memory that is flashed */
/* The assigned IMAGEID_xxx for this adapter */
/*
* Controller, 0 otherwise
*/
/* Version of expansion area */
/* The current number of Ports on a SAS controller, 0 otherwise */
/* Firmware Revision (Vmaj.min-dash.) */
/* Firmware's boot code Revision (Vmaj.min-dash.) */
/* PCBA serial no. from th MFG sector */
/* WWN from the MFG sector */
/* Growth Area for future expansion */
};
/* Container creation data */
struct aac_container_creation {
};
struct aac_mntobj {
union {
} ObjExtension;
};
struct aac_mntinfo {
};
struct aac_mntinforesp {
};
/*
* Structures used to access physical drives
*/
struct aac_bus_info {
};
struct aac_bus_info_response {
};
#define CT_PACKET_SIZE \
(AAC_FIB_DATASIZE - sizeof (uint32_t) - \
/* Container types */
typedef enum {
CT_NONE = 0,
/*
* Container Configuration Sub-Commands
*/
typedef enum {
CT_Null = 0,
/* 173 command and partner to scrub and rebuild task types */
/* 183 :RECmm: 20011220 added to support the Babylon */
/* 184 :RECmm: 20011220 array imports */
/* :BIOS_TEST: */
/* 185 :RECmm: 20020116 added to support BIOS interface for */
/* 186 :RECmm: 20020116 metadata conversion */
/* Not BIOS TEST */
/* 196 get only range of entries specified in c_params */
/* 197 remove ppitable bundle specified by uid in c_param0 */
/* 198 current partition structure (not legacy) */
/* 207 delete all PPI bundles that have an entry for device at devt */
/* 210 added to support firmware cache sync operations */
/* General return status */
/* CT_PM_DRIVER_SUPPORT parameter */
typedef enum {
struct aac_fsa_ctm {
};
struct aac_Container {
};
struct aac_fsa_ctr {
};
struct aac_Container_resp {
};
struct aac_cf_status_header {
};
enum aac_cf_action_type {
};
enum aac_mpe {
};
/*
* CT_PAUSE_IO is immediate minimal runtime command that is used
* to restart the applications and cache.
*/
struct aac_pause_command {
};
/*
* The following two definitions come from Adaptec:
*
* Used to flush drive cache for container "cid"
*/
struct aac_synchronize_command {
};
struct aac_synchronize_reply {
};
/*
* Command status values
*/
typedef enum {
ST_OK = 0,
/*
* Object-Server / Volume-Manager Dispatch Classes
*/
typedef enum {
VM_Null = 0,
/*
* Host-addressable object types
*/
typedef enum {
/* block for containers */
} AAC_FType;
struct aac_sg_entry {
};
struct aac_sg_entry64 {
};
struct aac_sg_entryraw {
};
struct aac_sg_table {
/* SUN's CC cannot accept [0] */
};
struct aac_sg_table64 {
};
struct aac_sg_tableraw {
};
/*
* These structures are packed into the 'data' area in the FIB.
*/
struct aac_blockread {
};
struct aac_blockread64 {
};
struct aac_blockread_response {
};
struct aac_blockwrite {
};
struct aac_blockwrite64 {
};
struct aac_blockwrite_response {
};
struct aac_raw_io {
};
/*
* Container shutdown command.
*/
struct aac_close_command {
};
/*
* Container Config Command
*/
struct aac_ctcfg {
};
struct aac_ctcfg_resp {
};
/* Write 'stability' options */
/* Number of FIBs for the controller to send us messages */
/* Number of FIBs for the host I/O request */
/* Size of buffer for text messages from the controller */
struct aac_adapter_init {
/* ADAPTER_INIT_STRUCT_REVISION_4 begins here */
};
/* ************AAC QUEUE DEFINES (BELOW)*********** */
#define AAC_PRODUCER_INDEX 0
struct aac_queue_entry {
};
/*
* Queue names
*
* Note that we base these at 0 in order to use them as array indices.
* Adaptec used base 1 for some unknown reason, and sorted them in a
* different order.
*/
#define AAC_HOST_NORM_CMD_Q 0
/*
* We establish 4 command queues and matching response queues. Queues must
* be 16-byte aligned, and are sized as follows:
*/
/* command adapter->host, normal priority */
/* command adapter->host, high priority */
/* command host->adapter, normal priority */
/* command host->adapter, high priority */
/* response, adapter->host, normal priority */
/* response, adapter->host, high priority */
/* response, host->adapter, normal priority */
/* response, host->adapter, high priority */
/*
* Table of queue indices and queues used to communicate with the
* controller. This structure must be aligned to AAC_QUEUE_ALIGN.
*/
struct aac_queue_table {
/* queue entry structures (layout mandated by adapter) */
};
/* ************AAC QUEUE DEFINES (ABOVE)*********** */
/*
*/
typedef enum {
/* possible only in this state */
/* - reconditioning in process */
/*
* Battery transition type
*/
typedef enum {
/* present */
/* operation possible only in this state */
/*
* Data types relating to AIFs
*/
/*
* Progress Reports
*/
typedef enum {
typedef enum {
struct aac_AifContainers {
};
union aac_AifJobClient {
/* filesystem progress ops */
};
struct aac_AifJobDesc {
};
struct aac_AifJobProgressReport {
};
/*
* Event Notification
*/
typedef enum {
/* General application notifies start here */
/* Host driver notifications start here */
struct aac_AifEnsGeneric {
};
struct aac_AifEnsDeviceFailure {
};
struct aac_AifEnsMirrorFailover {
};
struct aac_AifEnsContainerChange {
/* no container */
};
struct aac_AifEnsContainerEvent {
};
struct aac_AifEnsEnclosureEvent {
/* slot id, tempsensor id. */
};
struct aac_AifEnsBatteryEvent {
};
struct aac_AifEnsDiskSetEvent {
};
typedef enum {
CLUSTER_NULL_EVENT = 0,
/* adaptername from NULL to non-NULL */
/* (partner's agent may be up) */
/* adaptername from non-null to NULL */
/* (partner has rebooted) */
struct aac_AifEnsClusterEvent {
};
struct aac_AifEventNotify {
union {
/* struct aac_AifEnsSMARTEvent ES; */
} data;
};
/*
* Adapter Initiated FIB command structures. Start with the adapter
* initiated FIBs that really come from the adapter, and get responded
* to by the host.
*/
typedef enum {
struct aac_aif_command {
/* (if necessary) */
union {
} data;
};
/*
* Cluster Management Commands
*/
typedef enum {
/* disk set commands */
/* structs */
/* set */
/* set to another */
/* config commands */
/* adapter name) */
/* name and adapter name) */
/* cluster comm commands */
/* contents of message buffer */
/* of message buffer */
/* of message buffer */
/* of message buffer */
/* server side */
/* to client side */
/* buffer */
/* buffer */
/* last command */
/*
* Disk IOCTL Functions
*/
/* ioctl */
/*
* The following definitions come from Adaptec:
*
* SRB is required for the new management tools
* and non-DASD support.
*/
struct aac_srb
{
};
struct aac_srb_reply
{
};
/*
* SRB Flags
*/
/*
* SRB Functions - set in aac_srb->function
*/
/*
* SRB SCSI Status
* Status codes for SCSI passthrough commands,
* set in aac_srb->scsi_status
*/
#pragma pack()
/*
* Aligned structure definition for variable declarations that require
* alignment.
*/
union aac_fib_align {
struct aac_fib d;
};
/* AAC Communication Space */
struct aac_comm_space {
};
#ifdef __cplusplus
}
#endif
#endif /* __AAC_REGS_H__ */