1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _ATP870U_H
3#define _ATP870U_H
4
5#include <linux/types.h>
6#include <linux/kdev_t.h>
7
8/* I/O Port */
9
10#define MAX_CDB 12
11#define MAX_SENSE 14
12#define qcnt 32
13#define ATP870U_SCATTER 128
14
15#define MAX_ADAPTER 8
16#define MAX_SCSI_ID 16
17#define ATP870U_MAX_SECTORS 128
18
19#define ATP885_DEVID 0x808A
20#define ATP880_DEVID1 0x8080
21#define ATP880_DEVID2 0x8081
22
23//#define ED_DBGP
24
25struct atp_unit
26{
27 unsigned long baseport;
28 unsigned long ioport[2];
29 unsigned long pciport[2];
30 unsigned char last_cmd[2];
31 unsigned char in_snd[2];
32 unsigned char in_int[2];
33 unsigned char quhd[2];
34 unsigned char quend[2];
35 unsigned char global_map[2];
36 unsigned char host_id[2];
37 unsigned int working[2];
38 unsigned short wide_id[2];
39 unsigned short active_id[2];
40 unsigned short ultra_map[2];
41 unsigned short async[2];
42 unsigned char sp[2][16];
43 unsigned char r1f[2][16];
44 struct scsi_cmnd *quereq[2][qcnt];
45 struct atp_id
46 {
47 unsigned char dirct;
48 unsigned char devsp;
49 unsigned char devtype;
50 unsigned long tran_len;
51 unsigned long last_len;
52 unsigned char *prd_pos;
53 unsigned char *prd_table; /* Kernel address of PRD table */
54 dma_addr_t prd_bus; /* Bus address of PRD */
55 dma_addr_t prdaddr; /* Dynamically updated in driver */
56 struct scsi_cmnd *curr_req;
57 } id[2][16];
58 struct Scsi_Host *host;
59 struct pci_dev *pdev;
60 unsigned int unit;
61};
62
63#endif
64