Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/pci Move registers definitions to a separate file, n...



details:   https://anonhg.NetBSD.org/src/rev/a274c7603a39
branches:  trunk
changeset: 446146:a274c7603a39
user:      bouyer <bouyer%NetBSD.org@localhost>
date:      Sat Nov 24 18:11:22 2018 +0000

description:
Move registers definitions to a separate file, needed for the upcomning mpii
driver. No functionnal change.

diffstat:

 sys/dev/pci/mpii.c    |  1665 +------------------------------------------------
 sys/dev/pci/mpiireg.h |  1676 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 1682 insertions(+), 1659 deletions(-)

diffs (truncated from 3376 to 300 lines):

diff -r 3d4f9d01eedc -r a274c7603a39 sys/dev/pci/mpii.c
--- a/sys/dev/pci/mpii.c        Sat Nov 24 18:10:29 2018 +0000
+++ b/sys/dev/pci/mpii.c        Sat Nov 24 18:11:22 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: mpii.c,v 1.12 2018/10/14 17:37:40 jdolecek Exp $ */
+/* $NetBSD: mpii.c,v 1.13 2018/11/24 18:11:22 bouyer Exp $ */
 /*     OpenBSD: mpii.c,v 1.51 2012/04/11 13:29:14 naddy Exp    */
 /*
  * Copyright (c) 2010 Mike Belopuhov <mkb%crypt.org.ru@localhost>
@@ -20,7 +20,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mpii.c,v 1.12 2018/10/14 17:37:40 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mpii.c,v 1.13 2018/11/24 18:11:22 bouyer Exp $");
 
 #include "bio.h"
 
@@ -44,1665 +44,13 @@
 #include <dev/scsipi/scsi_all.h>
 #include <dev/scsipi/scsiconf.h>
 
+#include <dev/pci/mpiireg.h>
+
+#if NBIO > 0
 #include <dev/biovar.h>
 #include <dev/sysmon/sysmonvar.h>
 #include <sys/envsys.h>
-
-#define MPII_DOORBELL                  (0x00)
-/* doorbell read bits */
-#define MPII_DOORBELL_STATE            (0xf<<28) /* ioc state */
-#define  MPII_DOORBELL_STATE_RESET     (0x0<<28)
-#define  MPII_DOORBELL_STATE_READY     (0x1<<28)
-#define  MPII_DOORBELL_STATE_OPER      (0x2<<28)
-#define  MPII_DOORBELL_STATE_FAULT     (0x4<<28)
-#define  MPII_DOORBELL_INUSE           (0x1<<27) /* doorbell used */
-#define MPII_DOORBELL_WHOINIT          (0x7<<24) /* last to reset ioc */
-#define  MPII_DOORBELL_WHOINIT_NOONE   (0x0<<24) /* not initialized */
-#define  MPII_DOORBELL_WHOINIT_SYSBIOS (0x1<<24) /* system bios */
-#define  MPII_DOORBELL_WHOINIT_ROMBIOS (0x2<<24) /* rom bios */
-#define  MPII_DOORBELL_WHOINIT_PCIPEER (0x3<<24) /* pci peer */
-#define  MPII_DOORBELL_WHOINIT_DRIVER  (0x4<<24) /* host driver */
-#define  MPII_DOORBELL_WHOINIT_MANUFACT        (0x5<<24) /* manufacturing */
-#define MPII_DOORBELL_FAULT            (0xffff<<0) /* fault code */
-/* doorbell write bits */
-#define MPII_DOORBELL_FUNCTION_SHIFT   (24)
-#define MPII_DOORBELL_FUNCTION_MASK    (0xff << MPII_DOORBELL_FUNCTION_SHIFT)
-#define MPII_DOORBELL_FUNCTION(x)      \
-    (((x) << MPII_DOORBELL_FUNCTION_SHIFT) & MPII_DOORBELL_FUNCTION_MASK)
-#define MPII_DOORBELL_DWORDS_SHIFT     16
-#define MPII_DOORBELL_DWORDS_MASK      (0xff << MPII_DOORBELL_DWORDS_SHIFT)
-#define MPII_DOORBELL_DWORDS(x)                \
-    (((x) << MPII_DOORBELL_DWORDS_SHIFT) & MPII_DOORBELL_DWORDS_MASK)
-#define MPII_DOORBELL_DATA_MASK                (0xffff)
-
-#define MPII_WRITESEQ                  (0x04)
-#define  MPII_WRITESEQ_KEY_VALUE_MASK  (0x0000000f) /* key value */
-#define  MPII_WRITESEQ_FLUSH           (0x00)
-#define  MPII_WRITESEQ_1               (0x0f)
-#define  MPII_WRITESEQ_2               (0x04)
-#define  MPII_WRITESEQ_3               (0x0b)
-#define  MPII_WRITESEQ_4               (0x02)
-#define  MPII_WRITESEQ_5               (0x07)
-#define  MPII_WRITESEQ_6               (0x0d)
-
-#define MPII_HOSTDIAG                  (0x08)
-#define  MPII_HOSTDIAG_BDS_MASK                (0x00001800) /* boot device select */
-#define   MPII_HOSTDIAG_BDS_DEFAULT    (0<<11) /* default address map, flash */
-#define   MPII_HOSTDIAG_BDS_HCDW       (1<<11) /* host code and data window */
-#define  MPII_HOSTDIAG_CLEARFBS                (1<<10) /* clear flash bad sig */
-#define  MPII_HOSTDIAG_FORCE_HCB_ONBOOT (1<<9) /* force host controlled boot */
-#define  MPII_HOSTDIAG_HCB_MODE                (1<<8)  /* host controlled boot mode */
-#define  MPII_HOSTDIAG_DWRE            (1<<7)  /* diag reg write enabled */
-#define  MPII_HOSTDIAG_FBS             (1<<6)  /* flash bad sig */
-#define  MPII_HOSTDIAG_RESET_HIST      (1<<5)  /* reset history */
-#define  MPII_HOSTDIAG_DIAGWR_EN       (1<<4)  /* diagnostic write enabled */
-#define  MPII_HOSTDIAG_RESET_ADAPTER   (1<<2)  /* reset adapter */
-#define  MPII_HOSTDIAG_HOLD_IOC_RESET  (1<<1)  /* hold ioc in reset */
-#define  MPII_HOSTDIAG_DIAGMEM_EN      (1<<0)  /* diag mem enable */
-
-#define MPII_DIAGRWDATA                        (0x10)
-
-#define MPII_DIAGRWADDRLOW             (0x14)
-
-#define MPII_DIAGRWADDRHIGH            (0x18)
-
-#define MPII_INTR_STATUS               (0x30)
-#define  MPII_INTR_STATUS_SYS2IOCDB    (1<<31) /* ioc written to by host */
-#define  MPII_INTR_STATUS_RESET                (1<<30) /* physical ioc reset */
-#define  MPII_INTR_STATUS_REPLY                (1<<3)  /* reply message interrupt */
-#define  MPII_INTR_STATUS_IOC2SYSDB    (1<<0)  /* ioc write to doorbell */
-
-#define MPII_INTR_MASK                 (0x34)
-#define  MPII_INTR_MASK_RESET          (1<<30) /* ioc reset intr mask */
-#define  MPII_INTR_MASK_REPLY          (1<<3)  /* reply message intr mask */
-#define  MPII_INTR_MASK_DOORBELL       (1<<0)  /* doorbell interrupt mask */
-
-#define MPII_DCR_DATA                  (0x38)
-
-#define MPII_DCR_ADDRESS               (0x3c)
-
-#define MPII_REPLY_FREE_HOST_INDEX     (0x48)
-
-#define MPII_REPLY_POST_HOST_INDEX     (0x6c)
-
-#define MPII_HCB_SIZE                  (0x74)
-
-#define MPII_HCB_ADDRESS_LOW           (0x78)
-#define MPII_HCB_ADDRESS_HIGH          (0x7c)
-
-#define MPII_REQ_DESCR_POST_LOW                (0xc0)
-#define MPII_REQ_DESCR_POST_HIGH       (0xc4)
-
-/*
- * Scatter Gather Lists
- */
-
-#define MPII_SGE_FL_LAST               (0x1<<31) /* last element in segment */
-#define MPII_SGE_FL_EOB                        (0x1<<30) /* last element of buffer */
-#define MPII_SGE_FL_TYPE               (0x3<<28) /* element type */
- #define MPII_SGE_FL_TYPE_SIMPLE       (0x1<<28) /* simple element */
- #define MPII_SGE_FL_TYPE_CHAIN                (0x3<<28) /* chain element */
- #define MPII_SGE_FL_TYPE_XACTCTX      (0x0<<28) /* transaction context */
-#define MPII_SGE_FL_LOCAL              (0x1<<27) /* local address */
-#define MPII_SGE_FL_DIR                        (0x1<<26) /* direction */
- #define MPII_SGE_FL_DIR_OUT           (0x1<<26)
- #define MPII_SGE_FL_DIR_IN            (0x0<<26)
-#define MPII_SGE_FL_SIZE               (0x1<<25) /* address size */
- #define MPII_SGE_FL_SIZE_32           (0x0<<25)
- #define MPII_SGE_FL_SIZE_64           (0x1<<25)
-#define MPII_SGE_FL_EOL                        (0x1<<24) /* end of list */
-
-struct mpii_sge {
-       u_int32_t               sg_hdr;
-       u_int32_t               sg_lo_addr;
-       u_int32_t               sg_hi_addr;
-} __packed;
-
-struct mpii_fw_tce {
-       u_int8_t                reserved1;
-       u_int8_t                context_size;
-       u_int8_t                details_length;
-       u_int8_t                flags;
-
-       u_int32_t               reserved2;
-
-       u_int32_t               image_offset;
-
-       u_int32_t               image_size;
-} __packed;
-
-/*
- * Messages
- */
-
-/* functions */
-#define MPII_FUNCTION_SCSI_IO_REQUEST                  (0x00)
-#define MPII_FUNCTION_SCSI_TASK_MGMT                   (0x01)
-#define MPII_FUNCTION_IOC_INIT                         (0x02)
-#define MPII_FUNCTION_IOC_FACTS                                (0x03)
-#define MPII_FUNCTION_CONFIG                           (0x04)
-#define MPII_FUNCTION_PORT_FACTS                       (0x05)
-#define MPII_FUNCTION_PORT_ENABLE                      (0x06)
-#define MPII_FUNCTION_EVENT_NOTIFICATION               (0x07)
-#define MPII_FUNCTION_EVENT_ACK                                (0x08)
-#define MPII_FUNCTION_FW_DOWNLOAD                      (0x09)
-#define MPII_FUNCTION_TARGET_CMD_BUFFER_POST           (0x0a)
-#define MPII_FUNCTION_TARGET_ASSIST                    (0x0b)
-#define MPII_FUNCTION_TARGET_STATUS_SEND               (0x0c)
-#define MPII_FUNCTION_TARGET_MODE_ABORT                        (0x0d)
-#define MPII_FUNCTION_FW_UPLOAD                                (0x12)
-
-#define MPII_FUNCTION_RAID_ACTION                      (0x15)
-#define MPII_FUNCTION_RAID_SCSI_IO_PASSTHROUGH         (0x16)
-
-#define MPII_FUNCTION_TOOLBOX                          (0x17)
-
-#define MPII_FUNCTION_SCSI_ENCLOSURE_PROCESSOR         (0x18)
-
-#define MPII_FUNCTION_SMP_PASSTHROUGH                  (0x1a)
-#define MPII_FUNCTION_SAS_IO_UNIT_CONTROL              (0x1b)
-#define MPII_FUNCTION_SATA_PASSTHROUGH                 (0x1c)
-
-#define MPII_FUNCTION_DIAG_BUFFER_POST                 (0x1d)
-#define MPII_FUNCTION_DIAG_RELEASE                     (0x1e)
-
-#define MPII_FUNCTION_TARGET_CMD_BUF_BASE_POST         (0x24)
-#define MPII_FUNCTION_TARGET_CMD_BUF_LIST_POST         (0x25)
-
-#define MPII_FUNCTION_IOC_MESSAGE_UNIT_RESET           (0x40)
-#define MPII_FUNCTION_IO_UNIT_RESET                    (0x41)
-#define MPII_FUNCTION_HANDSHAKE                                (0x42)
-
-/* Common IOCStatus values for all replies */
-#define MPII_IOCSTATUS_MASK                            (0x7fff)
-#define  MPII_IOCSTATUS_SUCCESS                                (0x0000)
-#define  MPII_IOCSTATUS_INVALID_FUNCTION               (0x0001)
-#define  MPII_IOCSTATUS_BUSY                           (0x0002)
-#define  MPII_IOCSTATUS_INVALID_SGL                    (0x0003)
-#define  MPII_IOCSTATUS_INTERNAL_ERROR                 (0x0004)
-#define  MPII_IOCSTATUS_INVALID_VPID                   (0x0005)
-#define  MPII_IOCSTATUS_INSUFFICIENT_RESOURCES         (0x0006)
-#define  MPII_IOCSTATUS_INVALID_FIELD                  (0x0007)
-#define  MPII_IOCSTATUS_INVALID_STATE                  (0x0008)
-#define  MPII_IOCSTATUS_OP_STATE_NOT_SUPPORTED         (0x0009)
-/* Config IOCStatus values */
-#define  MPII_IOCSTATUS_CONFIG_INVALID_ACTION          (0x0020)
-#define  MPII_IOCSTATUS_CONFIG_INVALID_TYPE            (0x0021)
-#define  MPII_IOCSTATUS_CONFIG_INVALID_PAGE            (0x0022)
-#define  MPII_IOCSTATUS_CONFIG_INVALID_DATA            (0x0023)
-#define  MPII_IOCSTATUS_CONFIG_NO_DEFAULTS             (0x0024)
-#define  MPII_IOCSTATUS_CONFIG_CANT_COMMIT             (0x0025)
-/* SCSIIO Reply initiator values */
-#define  MPII_IOCSTATUS_SCSI_RECOVERED_ERROR           (0x0040)
-#define  MPII_IOCSTATUS_SCSI_INVALID_DEVHANDLE         (0x0042)
-#define  MPII_IOCSTATUS_SCSI_DEVICE_NOT_THERE          (0x0043)
-#define  MPII_IOCSTATUS_SCSI_DATA_OVERRUN              (0x0044)
-#define  MPII_IOCSTATUS_SCSI_DATA_UNDERRUN             (0x0045)
-#define  MPII_IOCSTATUS_SCSI_IO_DATA_ERROR             (0x0046)
-#define  MPII_IOCSTATUS_SCSI_PROTOCOL_ERROR            (0x0047)
-#define  MPII_IOCSTATUS_SCSI_TASK_TERMINATED           (0x0048)
-#define  MPII_IOCSTATUS_SCSI_RESIDUAL_MISMATCH         (0x0049)
-#define  MPII_IOCSTATUS_SCSI_TASK_MGMT_FAILED          (0x004a)
-#define  MPII_IOCSTATUS_SCSI_IOC_TERMINATED            (0x004b)
-#define  MPII_IOCSTATUS_SCSI_EXT_TERMINATED            (0x004c)
-/* For use by SCSI Initiator and SCSI Target end-to-end data protection */
-#define  MPII_IOCSTATUS_EEDP_GUARD_ERROR               (0x004d)
-#define  MPII_IOCSTATUS_EEDP_REF_TAG_ERROR             (0x004e)
-#define  MPII_IOCSTATUS_EEDP_APP_TAG_ERROR             (0x004f)
-/* SCSI (SPI & FCP) target values */
-#define  MPII_IOCSTATUS_TARGET_INVALID_IO_INDEX                (0x0062)
-#define  MPII_IOCSTATUS_TARGET_ABORTED                 (0x0063)
-#define  MPII_IOCSTATUS_TARGET_NO_CONN_RETRYABLE       (0x0064)
-#define  MPII_IOCSTATUS_TARGET_NO_CONNECTION           (0x0065)
-#define  MPII_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH     (0x006a)
-#define  MPII_IOCSTATUS_TARGET_DATA_OFFSET_ERROR       (0x006d)
-#define  MPII_IOCSTATUS_TARGET_TOO_MUCH_WRITE_DATA     (0x006e)
-#define  MPII_IOCSTATUS_TARGET_IU_TOO_SHORT            (0x006f)
-#define  MPII_IOCSTATUS_TARGET_ACK_NAK_TIMEOUT         (0x0070)
-#define  MPII_IOCSTATUS_TARGET_NAK_RECEIVED            (0x0071)
-/* Serial Attached SCSI values */
-#define  MPII_IOCSTATUS_SAS_SMP_REQUEST_FAILED         (0x0090)
-#define  MPII_IOCSTATUS_SAS_SMP_DATA_OVERRUN           (0x0091)
-/* Diagnostic Tools values */
-#define  MPII_IOCSTATUS_DIAGNOSTIC_RELEASED            (0x00a0)
-
-#define MPII_REP_IOCLOGINFO_TYPE                       (0xf<<28)
-#define MPII_REP_IOCLOGINFO_TYPE_NONE                  (0x0<<28)
-#define MPII_REP_IOCLOGINFO_TYPE_SCSI                  (0x1<<28)
-#define MPII_REP_IOCLOGINFO_TYPE_FC                    (0x2<<28)
-#define MPII_REP_IOCLOGINFO_TYPE_SAS                   (0x3<<28)
-#define MPII_REP_IOCLOGINFO_TYPE_ISCSI                 (0x4<<28)
-#define MPII_REP_IOCLOGINFO_DATA                       (0x0fffffff)
-
-/* event notification types */
-#define MPII_EVENT_NONE                                        (0x00)
-#define MPII_EVENT_LOG_DATA                            (0x01)
-#define MPII_EVENT_STATE_CHANGE                                (0x02)
-#define MPII_EVENT_HARD_RESET_RECEIVED                 (0x05)
-#define MPII_EVENT_EVENT_CHANGE                                (0x0a)
-#define MPII_EVENT_TASK_SET_FULL                       (0x0e)
-#define MPII_EVENT_SAS_DEVICE_STATUS_CHANGE            (0x0f)
-#define MPII_EVENT_IR_OPERATION_STATUS                 (0x14)
-#define MPII_EVENT_SAS_DISCOVERY                       (0x16)
-#define MPII_EVENT_SAS_BROADCAST_PRIMITIVE             (0x17)
-#define MPII_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE       (0x18)
-#define MPII_EVENT_SAS_INIT_TABLE_OVERFLOW             (0x19)
-#define MPII_EVENT_SAS_TOPOLOGY_CHANGE_LIST            (0x1c)
-#define MPII_EVENT_SAS_ENCL_DEVICE_STATUS_CHANGE       (0x1d)
-#define MPII_EVENT_IR_VOLUME                           (0x1e)
-#define MPII_EVENT_IR_PHYSICAL_DISK                    (0x1f)
-#define MPII_EVENT_IR_CONFIGURATION_CHANGE_LIST                (0x20)
-#define MPII_EVENT_LOG_ENTRY_ADDED                     (0x21)
-
-/* messages */
-
-#define MPII_WHOINIT_NOONE                             (0x00)
-#define MPII_WHOINIT_SYSTEM_BIOS                       (0x01)
-#define MPII_WHOINIT_ROM_BIOS                          (0x02)
-#define MPII_WHOINIT_PCI_PEER                          (0x03)
-#define MPII_WHOINIT_HOST_DRIVER                       (0x04)
-#define MPII_WHOINIT_MANUFACTURER                      (0x05)
-
-/* default messages */
-
-struct mpii_msg_request {
-       u_int8_t                reserved1;
-       u_int8_t                reserved2;
-       u_int8_t                chain_offset;
-       u_int8_t                function;
-
-       u_int8_t                reserved3;
-       u_int8_t                reserved4;
-       u_int8_t                reserved5;
-       u_int8_t                msg_flags;
-
-       u_int8_t                vp_id;
-       u_int8_t                vf_id;
-       u_int16_t               reserved6;



Home | Main Index | Thread Index | Old Index