aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci/host.h
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-05-10 05:28:46 -0400
committerDan Williams <dan.j.williams@intel.com>2011-07-03 07:04:47 -0400
commite2f8db509fdd354bb7a68c86515e9d2d8909ccc9 (patch)
treee27f2d33290b0c6f7ca20e408ce7f8ff9309dc43 /drivers/scsi/isci/host.h
parentd35bc1bd18ab9e986cfb67c5a281a70cfd717f05 (diff)
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 @@
55#ifndef _SCI_HOST_H_ 55#ifndef _SCI_HOST_H_
56#define _SCI_HOST_H_ 56#define _SCI_HOST_H_
57 57
58#include "scic_config_parameters.h"
59#include "remote_device.h" 58#include "remote_device.h"
60#include "phy.h" 59#include "phy.h"
61#include "pool.h" 60#include "pool.h"
@@ -64,11 +63,12 @@
64#include "registers.h" 63#include "registers.h"
65#include "scu_unsolicited_frame.h" 64#include "scu_unsolicited_frame.h"
66#include "unsolicited_frame_control.h" 65#include "unsolicited_frame_control.h"
67#include "scic_sds_port_configuration_agent.h" 66#include "probe_roms.h"
68 67
69struct scic_sds_request; 68struct scic_sds_request;
70struct scu_task_context; 69struct scu_task_context;
71 70
71
72/** 72/**
73 * struct scic_power_control - 73 * struct scic_power_control -
74 * 74 *
@@ -107,6 +107,24 @@ struct scic_power_control {
107 107
108}; 108};
109 109
110struct scic_sds_port_configuration_agent;
111typedef void (*port_config_fn)(struct scic_sds_controller *,
112 struct scic_sds_port_configuration_agent *,
113 struct scic_sds_port *, struct scic_sds_phy *);
114
115struct scic_sds_port_configuration_agent {
116 u16 phy_configured_mask;
117 u16 phy_ready_mask;
118 struct {
119 u8 min_index;
120 u8 max_index;
121 } phy_valid_port_range[SCI_MAX_PHYS];
122 bool timer_pending;
123 port_config_fn link_up_handler;
124 port_config_fn link_down_handler;
125 void *timer;
126};
127
110/** 128/**
111 * struct scic_sds_controller - 129 * struct scic_sds_controller -
112 * 130 *
@@ -800,4 +818,11 @@ u16 scic_controller_allocate_io_tag(
800enum sci_status scic_controller_free_io_tag( 818enum sci_status scic_controller_free_io_tag(
801 struct scic_sds_controller *scic, 819 struct scic_sds_controller *scic,
802 u16 io_tag); 820 u16 io_tag);
821
822void scic_sds_port_configuration_agent_construct(
823 struct scic_sds_port_configuration_agent *port_agent);
824
825enum sci_status scic_sds_port_configuration_agent_initialize(
826 struct scic_sds_controller *controller,
827 struct scic_sds_port_configuration_agent *port_agent);
803#endif 828#endif