summaryrefslogtreecommitdiff
path: root/drivers/scsi/isci/host.h
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-05-10 13:28:46 +0400
committerDan Williams <dan.j.williams@intel.com>2011-07-03 15:04:47 +0400
commite2f8db509fdd354bb7a68c86515e9d2d8909ccc9 (patch)
treee27f2d33290b0c6f7ca20e408ce7f8ff9309dc43 /drivers/scsi/isci/host.h
parentd35bc1bd18ab9e986cfb67c5a281a70cfd717f05 (diff)
downloadlinux-e2f8db509fdd354bb7a68c86515e9d2d8909ccc9.tar.xz
isci: uplevel port infrastructure
* Move port configuration agent implementation * Merge core/scic_sds_port.[ch] into port.[ch] Reported-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/host.h')
-rw-r--r--drivers/scsi/isci/host.h29
1 files changed, 27 insertions, 2 deletions
diff --git a/drivers/scsi/isci/host.h b/drivers/scsi/isci/host.h
index 9c5d121ce791..784e1355e8ec 100644
--- a/drivers/scsi/isci/host.h
+++ b/drivers/scsi/isci/host.h
@@ -55,7 +55,6 @@
#ifndef _SCI_HOST_H_
#define _SCI_HOST_H_
-#include "scic_config_parameters.h"
#include "remote_device.h"
#include "phy.h"
#include "pool.h"
@@ -64,11 +63,12 @@
#include "registers.h"
#include "scu_unsolicited_frame.h"
#include "unsolicited_frame_control.h"
-#include "scic_sds_port_configuration_agent.h"
+#include "probe_roms.h"
struct scic_sds_request;
struct scu_task_context;
+
/**
* struct scic_power_control -
*
@@ -107,6 +107,24 @@ struct scic_power_control {
};
+struct scic_sds_port_configuration_agent;
+typedef void (*port_config_fn)(struct scic_sds_controller *,
+ struct scic_sds_port_configuration_agent *,
+ struct scic_sds_port *, struct scic_sds_phy *);
+
+struct scic_sds_port_configuration_agent {
+ u16 phy_configured_mask;
+ u16 phy_ready_mask;
+ struct {
+ u8 min_index;
+ u8 max_index;
+ } phy_valid_port_range[SCI_MAX_PHYS];
+ bool timer_pending;
+ port_config_fn link_up_handler;
+ port_config_fn link_down_handler;
+ void *timer;
+};
+
/**
* struct scic_sds_controller -
*
@@ -800,4 +818,11 @@ u16 scic_controller_allocate_io_tag(
enum sci_status scic_controller_free_io_tag(
struct scic_sds_controller *scic,
u16 io_tag);
+
+void scic_sds_port_configuration_agent_construct(
+ struct scic_sds_port_configuration_agent *port_agent);
+
+enum sci_status scic_sds_port_configuration_agent_initialize(
+ struct scic_sds_controller *controller,
+ struct scic_sds_port_configuration_agent *port_agent);
#endif