* ========== Copyright Header Begin ==========================================
* OpenSPARC T2 Processor File: scsi_ctrl.h
* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
* The above named program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License version 2 as published by the Free Software Foundation.
* The above named program is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
* You should have received a copy of the GNU General Public
* License along with this work; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
* ========== Copyright Header End ============================================
* Copyright (C) 2002 Sun Microsystems, Inc.
#pragma ident "@(#)1.6 04/01/09 scsi_ctrl.h"
#define SCSI_CTRL_TYPE_MAJOR(scsi_ctrl_type) ((scsi_ctrl_type >> 8) & 0xFF)
#define SCSI_CTRL_TYPE_MINOR(scsi_ctrl_type) ((scsi_ctrl_type >> 0) & 0xFF)
#define SCSI_CTRL_TYPE_MAKE(major, minor) ((major << 8) | minor)
uint32_t PCIA_SCSI_CTRL_PCI_DEV_ID_START
;
uint32_t PCIA_SCSI_CTRL_INTR_OFFSET
;
uint32_t PCIA_SCSI_CTRL_COUNT
;
uint32_t PCIA_SCSI_CTRL_BASE
;
#define PCIB_SCSI_CTRL_PCI_DEV_ID_START 0x00
#define PCIB_SCSI_CTRL_INTR_OFFSET 0x19
uint32_t PCIB_SCSI_CTRL_COUNT
; // 22
#define SCSI_CTRL_SIZE 0x02000
#define PCIB_SCSI_CTRL_BASE 0x00000
#define SYMBIOS_SCSI_CTRL 1
typedef int (*scsi_ctrl_reg_access_func_t
)(void *handle
, char *buf
,
LWord paddr
, Word size
, bool_t wr
);
typedef int (*scsi_ctrl_ioctl_func_t
)(void *handle
, int func
, int opcode
, void *valuep
);
#define SCP_IOCTL_GET_SCSI_BUS 1
#define SCP_IOCTL_DUMP_DEBUG_INFO 2
#define SCP_IOCTL_DEBUG_ENABLE 3
#define SCP_IOCTL_DEBUG_DISABLE 4
#define SCP_IOCTL_DUMP_STATE 5
#define SCP_IOCTL_RESTORE_STATE 6
#define SCP_IOCTL_DUMP_STATISTICS 7
#define SCP_IOCTL_GET_STOP_SAFE 8
#define MAX_SCP_IOCTL_OPCODE 8
scsi_ctrl_reg_access_func_t reg_access
;
scsi_ctrl_ioctl_func_t ioctl
;
#define SCSI_CONF_FNAME "scsidisk.init"
typedef struct scsi_ctrl_ops scsi_ctrl_ops_t
;
extern int scsi_ctrl_get_controller_id(struct scsi_ctrl
*scp
, int *idp
);
extern void scsi_ctrl_set_scsi_ctrl_ops(struct scsi_ctrl
*scp
, struct scsi_ctrl_ops
*ops
);
extern int scsi_ctrl_read_memory(struct scsi_ctrl
*scp
, char *buf
, LWord vaddr
, int len
);
extern int scsi_ctrl_write_memory(struct scsi_ctrl
*scp
, char *buf
, LWord vaddr
, int len
);
extern int scsi_ctrl_raise_interrupt(struct scsi_ctrl
*scp
);
extern bool_t
scsi_ctrl_deassert_interrupt(struct scsi_ctrl
*scp
);
extern void scsi_ctrl_dump_debug_info_all(FILE *dbgfile
);
extern uint64_t scsi_ctrl_get_timestamp(void);
extern int scsi_ctrl_get_diskdelay(ScsiDisk
*sdskp
);
extern int scsi_ctrl_get_wrdiskdelay(ScsiDisk
*sdskp
);
extern uint64_t scsi_ctrl_get_globaltick_per_cpu(void);
extern void scsi_ctrl_sigcore_handler(void);
#endif /* SCSI_CTRL_H_ */