root/drivers/scsi/atp870u.h
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ATP870U_H
#define _ATP870U_H

#include <linux/types.h>
#include <linux/kdev_t.h>

/* I/O Port */

#define MAX_CDB         12
#define MAX_SENSE       14
#define qcnt            32
#define ATP870U_SCATTER 128

#define MAX_ADAPTER     8
#define MAX_SCSI_ID     16
#define ATP870U_MAX_SECTORS 128

#define ATP885_DEVID 0x808A
#define ATP880_DEVID1 0x8080
#define ATP880_DEVID2 0x8081

//#define ED_DBGP

struct atp_unit
{
        unsigned long baseport;
        unsigned long ioport[2];
        unsigned long pciport[2];
        unsigned char last_cmd[2];
        unsigned char in_snd[2];
        unsigned char in_int[2];
        unsigned char quhd[2];
        unsigned char quend[2];
        unsigned char global_map[2];
        unsigned char host_id[2];
        unsigned int working[2];
        unsigned short wide_id[2];
        unsigned short active_id[2];
        unsigned short ultra_map[2];
        unsigned short async[2];
        unsigned char sp[2][16];
        unsigned char r1f[2][16];
        struct scsi_cmnd *quereq[2][qcnt];
        struct atp_id
        {
                unsigned char dirct;
                unsigned char devsp;
                unsigned char devtype;
                unsigned long tran_len;
                unsigned long last_len;
                unsigned char *prd_pos;
                unsigned char *prd_table;       /* Kernel address of PRD table */
                dma_addr_t prd_bus;             /* Bus address of PRD */
                dma_addr_t prdaddr;             /* Dynamically updated in driver */
                struct scsi_cmnd *curr_req;
        } id[2][16];
        struct Scsi_Host *host;
        struct pci_dev *pdev;
        unsigned int unit;
};

#endif