Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / sam / include / scsi_ctrl.h
/*
* ========== 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.
* All rights reserved.
*/
#pragma ident "@(#)1.6 04/01/09 scsi_ctrl.h"
#ifndef SCSI_CTRL_H_
#define SCSI_CTRL_H_
#include <limits.h>
#include "types.h"
struct sym_scsi_ctrl;
struct scsi_bus;
class ScsiDisk;
#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
struct scsi_ctrl_ops {
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_ */