summaryrefslogtreecommitdiffstats
path: root/include/scsi
diff options
context:
space:
mode:
authorDarrick J. Wong2007-01-11 23:14:57 +0100
committerJames Bottomley2007-01-13 23:13:00 +0100
commitacbf167d4ad8c27f9743a4b539d51ae9535bf21c (patch)
treee53f8330f60acaef42d74a745b3dd5131b424e49 /include/scsi
parent[SCSI] libsas: Don't give scsi_cmnds to the EH if they never made it to the S... (diff)
downloadkernel-qcow2-linux-acbf167d4ad8c27f9743a4b539d51ae9535bf21c.tar.gz
kernel-qcow2-linux-acbf167d4ad8c27f9743a4b539d51ae9535bf21c.tar.xz
kernel-qcow2-linux-acbf167d4ad8c27f9743a4b539d51ae9535bf21c.zip
[SCSI] libsas: Add a sysfs knob to enable/disable a phy
This patch lets a user arbitrarily enable or disable a phy via sysfs. Potential applications include shutting down a phy to replace one lane of wide port, and (more importantly) providing a method for the libata SATL to control the phy. Signed-off-by: Darrick J. Wong <djwong@us.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'include/scsi')
-rw-r--r--include/scsi/libsas.h3
-rw-r--r--include/scsi/scsi_transport_sas.h2
2 files changed, 5 insertions, 0 deletions
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index da96bcfb9e46..0689d6682aa3 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -614,6 +614,9 @@ struct sas_domain_function_template {
extern int sas_register_ha(struct sas_ha_struct *);
extern int sas_unregister_ha(struct sas_ha_struct *);
+int sas_set_phy_speed(struct sas_phy *phy,
+ struct sas_phy_linkrates *rates);
+int sas_phy_enable(struct sas_phy *phy, int enabled);
int sas_phy_reset(struct sas_phy *phy, int hard_reset);
extern int sas_queuecommand(struct scsi_cmnd *,
void (*scsi_done)(struct scsi_cmnd *));
diff --git a/include/scsi/scsi_transport_sas.h b/include/scsi/scsi_transport_sas.h
index 59633a82de47..45d58598c3ee 100644
--- a/include/scsi/scsi_transport_sas.h
+++ b/include/scsi/scsi_transport_sas.h
@@ -54,6 +54,7 @@ struct sas_identify {
struct sas_phy {
struct device dev;
int number;
+ int enabled;
/* phy identification */
struct sas_identify identify;
@@ -163,6 +164,7 @@ struct sas_function_template {
int (*get_enclosure_identifier)(struct sas_rphy *, u64 *);
int (*get_bay_identifier)(struct sas_rphy *);
int (*phy_reset)(struct sas_phy *, int);
+ int (*phy_enable)(struct sas_phy *, int);
int (*set_phy_speed)(struct sas_phy *, struct sas_phy_linkrates *);
};