1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Aic94xx SAS/SATA driver header file.
5 * Copyright (C) 2005 Adaptec, Inc. All rights reserved.
6 * Copyright (C) 2005 Luben Tuikov <luben_tuikov@adaptec.com>
8 * $Id: //depot/aic94xx/aic94xx.h#31 $
14 #include <linux/slab.h>
15 #include <linux/ctype.h>
16 #include <scsi/libsas.h>
18 #define ASD_DRIVER_NAME "aic94xx"
19 #define ASD_DRIVER_DESCRIPTION "Adaptec aic94xx SAS/SATA driver"
21 #define asd_printk(fmt, ...) printk(KERN_NOTICE ASD_DRIVER_NAME ": " fmt, ## __VA_ARGS__)
24 #define ENTER printk(KERN_NOTICE "%s: ENTER %s\n", ASD_DRIVER_NAME, \
26 #define EXIT printk(KERN_NOTICE "%s: --EXIT %s\n", ASD_DRIVER_NAME, \
34 #define ASD_DPRINTK asd_printk
36 #define ASD_DPRINTK(fmt, ...)
39 /* 2*ITNL timeout + 1 second */
40 #define AIC94XX_SCB_TIMEOUT (5*HZ)
42 extern struct kmem_cache
*asd_dma_token_cache
;
43 extern struct kmem_cache
*asd_ascb_cache
;
45 static inline void asd_stringify_sas_addr(char *p
, const u8
*sas_addr
)
48 for (i
= 0; i
< SAS_ADDR_SIZE
; i
++, p
+= 2)
49 snprintf(p
, 3, "%02X", sas_addr
[i
]);
56 int asd_read_ocm(struct asd_ha_struct
*asd_ha
);
57 int asd_read_flash(struct asd_ha_struct
*asd_ha
);
59 int asd_dev_found(struct domain_device
*dev
);
60 void asd_dev_gone(struct domain_device
*dev
);
62 void asd_invalidate_edb(struct asd_ascb
*ascb
, int edb_id
);
64 int asd_execute_task(struct sas_task
*task
, gfp_t gfp_flags
);
66 void asd_set_dmamode(struct domain_device
*dev
);
68 /* ---------- TMFs ---------- */
69 int asd_abort_task(struct sas_task
*);
70 int asd_abort_task_set(struct domain_device
*, u8
*lun
);
71 int asd_clear_aca(struct domain_device
*, u8
*lun
);
72 int asd_clear_task_set(struct domain_device
*, u8
*lun
);
73 int asd_lu_reset(struct domain_device
*, u8
*lun
);
74 int asd_I_T_nexus_reset(struct domain_device
*dev
);
75 int asd_query_task(struct sas_task
*);
77 /* ---------- Adapter and Port management ---------- */
78 int asd_clear_nexus_port(struct asd_sas_port
*port
);
79 int asd_clear_nexus_ha(struct sas_ha_struct
*sas_ha
);
81 /* ---------- Phy Management ---------- */
82 int asd_control_phy(struct asd_sas_phy
*phy
, enum phy_func func
, void *arg
);