]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/scsi/scsi_transport_sas.h
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
[linux-2.6-omap-h63xx.git] / include / scsi / scsi_transport_sas.h
index 87de518960c1722bcdaafa62fd90f51f01db1008..9aedc19820b0df1d007b0d8e7150de5e3c07e5fd 100644 (file)
@@ -54,6 +54,7 @@ struct sas_identify {
 struct sas_phy {
        struct device           dev;
        int                     number;
+       int                     enabled;
 
        /* phy identification */
        struct sas_identify     identify;
@@ -73,6 +74,8 @@ struct sas_phy {
 
        /* for the list of phys belonging to a port */
        struct list_head        port_siblings;
+
+       struct work_struct      reset_work;
 };
 
 #define dev_to_phy(d) \
@@ -150,12 +153,19 @@ struct sas_port {
 #define transport_class_to_sas_port(cdev) \
        dev_to_sas_port((cdev)->dev)
 
+struct sas_phy_linkrates {
+       enum sas_linkrate maximum_linkrate;
+       enum sas_linkrate minimum_linkrate;
+};
+
 /* The functions by which the transport class and the driver communicate */
 struct sas_function_template {
        int (*get_linkerrors)(struct sas_phy *);
        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 *);
 };
 
 
@@ -172,6 +182,7 @@ extern struct sas_rphy *sas_end_device_alloc(struct sas_port *);
 extern struct sas_rphy *sas_expander_alloc(struct sas_port *, enum sas_device_type);
 void sas_rphy_free(struct sas_rphy *);
 extern int sas_rphy_add(struct sas_rphy *);
+extern void sas_rphy_remove(struct sas_rphy *);
 extern void sas_rphy_delete(struct sas_rphy *);
 extern int scsi_is_sas_rphy(const struct device *);