aboutsummaryrefslogtreecommitdiffstats
path: root/include/scsi
diff options
context:
space:
mode:
authorJames Bottomley <James.Bottomley@steeleye.com>2006-03-04 10:10:18 -0500
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-03-06 10:43:17 -0500
commit42ab03609cca4ef5079e248296f015650c626899 (patch)
treee81cfa54e34537ef4a3ee7363e123c5428800a1c /include/scsi
parentdd9fbb52134693f1394a928c05d5f3cd3fdaf6e0 (diff)
[PATCH] convert aic94xx over to using the sas transport end device
Begin introducing the concept of sas remote devices that have an rphy embedded. The first one (this) is a simple end device. All that an end device really does is have port mode page parameters contained. The next and more complex piece will be expander remote devices. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'include/scsi')
-rw-r--r--include/scsi/scsi_transport_sas.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/scsi/scsi_transport_sas.h b/include/scsi/scsi_transport_sas.h
index 95e2132d485e..8fded431cf46 100644
--- a/include/scsi/scsi_transport_sas.h
+++ b/include/scsi/scsi_transport_sas.h
@@ -82,6 +82,10 @@ struct sas_rphy {
82 struct sas_identify identify; 82 struct sas_identify identify;
83 struct list_head list; 83 struct list_head list;
84 u32 scsi_target_id; 84 u32 scsi_target_id;
85 /* temporary expedient: mark the rphy as being contained
86 * within a type specific rphy
87 * FIXME: pull this out when everything uses the containers */
88 unsigned contained:1;
85}; 89};
86 90
87#define dev_to_rphy(d) \ 91#define dev_to_rphy(d) \
@@ -90,6 +94,19 @@ struct sas_rphy {
90 dev_to_rphy((cdev)->dev) 94 dev_to_rphy((cdev)->dev)
91#define rphy_to_shost(rphy) \ 95#define rphy_to_shost(rphy) \
92 dev_to_shost((rphy)->dev.parent) 96 dev_to_shost((rphy)->dev.parent)
97#define target_to_rphy(targ) \
98 dev_to_rphy((targ)->dev.parent)
99
100struct sas_end_device {
101 struct sas_rphy rphy;
102 /* flags */
103 unsigned ready_led_meaning:1;
104 /* parameters */
105 u16 I_T_nexus_loss_timeout;
106 u16 initiator_response_timeout;
107};
108#define rphy_to_end_device(r) \
109 container_of((r), struct sas_end_device, rphy)
93 110
94 111
95/* The functions by which the transport class and the driver communicate */ 112/* The functions by which the transport class and the driver communicate */
@@ -110,6 +127,7 @@ extern void sas_phy_delete(struct sas_phy *);
110extern int scsi_is_sas_phy(const struct device *); 127extern int scsi_is_sas_phy(const struct device *);
111 128
112extern struct sas_rphy *sas_rphy_alloc(struct sas_phy *); 129extern struct sas_rphy *sas_rphy_alloc(struct sas_phy *);
130extern struct sas_rphy *sas_end_device_alloc(struct sas_phy *);
113void sas_rphy_free(struct sas_rphy *); 131void sas_rphy_free(struct sas_rphy *);
114extern int sas_rphy_add(struct sas_rphy *); 132extern int sas_rphy_add(struct sas_rphy *);
115extern void sas_rphy_delete(struct sas_rphy *); 133extern void sas_rphy_delete(struct sas_rphy *);
@@ -118,5 +136,6 @@ extern int scsi_is_sas_rphy(const struct device *);
118extern struct scsi_transport_template * 136extern struct scsi_transport_template *
119sas_attach_transport(struct sas_function_template *); 137sas_attach_transport(struct sas_function_template *);
120extern void sas_release_transport(struct scsi_transport_template *); 138extern void sas_release_transport(struct scsi_transport_template *);
139int sas_read_port_mode_page(struct scsi_device *);
121 140
122#endif /* SCSI_TRANSPORT_SAS_H */ 141#endif /* SCSI_TRANSPORT_SAS_H */