1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun * Support for SATA devices on Serial Attached SCSI (SAS) controllers
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * Copyright (C) 2006 IBM Corporation
6*4882a593Smuzhiyun *
7*4882a593Smuzhiyun * Written by: Darrick J. Wong <djwong@us.ibm.com>, IBM Corporation
8*4882a593Smuzhiyun */
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun #ifndef _SAS_ATA_H_
11*4882a593Smuzhiyun #define _SAS_ATA_H_
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun #include <linux/libata.h>
14*4882a593Smuzhiyun #include <scsi/libsas.h>
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun #ifdef CONFIG_SCSI_SAS_ATA
17*4882a593Smuzhiyun
dev_is_sata(struct domain_device * dev)18*4882a593Smuzhiyun static inline int dev_is_sata(struct domain_device *dev)
19*4882a593Smuzhiyun {
20*4882a593Smuzhiyun return dev->dev_type == SAS_SATA_DEV || dev->dev_type == SAS_SATA_PM ||
21*4882a593Smuzhiyun dev->dev_type == SAS_SATA_PM_PORT || dev->dev_type == SAS_SATA_PENDING;
22*4882a593Smuzhiyun }
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy);
25*4882a593Smuzhiyun int sas_ata_init(struct domain_device *dev);
26*4882a593Smuzhiyun void sas_ata_task_abort(struct sas_task *task);
27*4882a593Smuzhiyun void sas_ata_strategy_handler(struct Scsi_Host *shost);
28*4882a593Smuzhiyun void sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q,
29*4882a593Smuzhiyun struct list_head *done_q);
30*4882a593Smuzhiyun void sas_ata_schedule_reset(struct domain_device *dev);
31*4882a593Smuzhiyun void sas_ata_wait_eh(struct domain_device *dev);
32*4882a593Smuzhiyun void sas_probe_sata(struct asd_sas_port *port);
33*4882a593Smuzhiyun void sas_suspend_sata(struct asd_sas_port *port);
34*4882a593Smuzhiyun void sas_resume_sata(struct asd_sas_port *port);
35*4882a593Smuzhiyun void sas_ata_end_eh(struct ata_port *ap);
36*4882a593Smuzhiyun #else
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun
dev_is_sata(struct domain_device * dev)39*4882a593Smuzhiyun static inline int dev_is_sata(struct domain_device *dev)
40*4882a593Smuzhiyun {
41*4882a593Smuzhiyun return 0;
42*4882a593Smuzhiyun }
sas_ata_init(struct domain_device * dev)43*4882a593Smuzhiyun static inline int sas_ata_init(struct domain_device *dev)
44*4882a593Smuzhiyun {
45*4882a593Smuzhiyun return 0;
46*4882a593Smuzhiyun }
sas_ata_task_abort(struct sas_task * task)47*4882a593Smuzhiyun static inline void sas_ata_task_abort(struct sas_task *task)
48*4882a593Smuzhiyun {
49*4882a593Smuzhiyun }
50*4882a593Smuzhiyun
sas_ata_strategy_handler(struct Scsi_Host * shost)51*4882a593Smuzhiyun static inline void sas_ata_strategy_handler(struct Scsi_Host *shost)
52*4882a593Smuzhiyun {
53*4882a593Smuzhiyun }
54*4882a593Smuzhiyun
sas_ata_eh(struct Scsi_Host * shost,struct list_head * work_q,struct list_head * done_q)55*4882a593Smuzhiyun static inline void sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q,
56*4882a593Smuzhiyun struct list_head *done_q)
57*4882a593Smuzhiyun {
58*4882a593Smuzhiyun }
59*4882a593Smuzhiyun
sas_ata_schedule_reset(struct domain_device * dev)60*4882a593Smuzhiyun static inline void sas_ata_schedule_reset(struct domain_device *dev)
61*4882a593Smuzhiyun {
62*4882a593Smuzhiyun }
63*4882a593Smuzhiyun
sas_ata_wait_eh(struct domain_device * dev)64*4882a593Smuzhiyun static inline void sas_ata_wait_eh(struct domain_device *dev)
65*4882a593Smuzhiyun {
66*4882a593Smuzhiyun }
67*4882a593Smuzhiyun
sas_probe_sata(struct asd_sas_port * port)68*4882a593Smuzhiyun static inline void sas_probe_sata(struct asd_sas_port *port)
69*4882a593Smuzhiyun {
70*4882a593Smuzhiyun }
71*4882a593Smuzhiyun
sas_suspend_sata(struct asd_sas_port * port)72*4882a593Smuzhiyun static inline void sas_suspend_sata(struct asd_sas_port *port)
73*4882a593Smuzhiyun {
74*4882a593Smuzhiyun }
75*4882a593Smuzhiyun
sas_resume_sata(struct asd_sas_port * port)76*4882a593Smuzhiyun static inline void sas_resume_sata(struct asd_sas_port *port)
77*4882a593Smuzhiyun {
78*4882a593Smuzhiyun }
79*4882a593Smuzhiyun
sas_get_ata_info(struct domain_device * dev,struct ex_phy * phy)80*4882a593Smuzhiyun static inline int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy)
81*4882a593Smuzhiyun {
82*4882a593Smuzhiyun return 0;
83*4882a593Smuzhiyun }
84*4882a593Smuzhiyun
sas_ata_end_eh(struct ata_port * ap)85*4882a593Smuzhiyun static inline void sas_ata_end_eh(struct ata_port *ap)
86*4882a593Smuzhiyun {
87*4882a593Smuzhiyun }
88*4882a593Smuzhiyun #endif
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun #endif /* _SAS_ATA_H_ */
91